home *** CD-ROM | disk | FTP | other *** search
- /* DETEX v1.0. Part of DoomTex, by Steve McCrea 26/8/94 */
- #include <stdio.h>
- #include <stdlib.h>
- #include <dos.h>
- #include <io.h>
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <malloc.h>
- #include <fcntl.h>
-
- int fh;
-
- void error(char *errstr)
- { printf("Detex: ");
- printf(errstr);
- exit(1); }
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- char texname[10], patname[10];
- char *pnames;
- long numtexs, numpats, dummy, i;
- int lnumpats, patnum, j, k, x, y;
-
- if (argc != 3)
- error("Usage: detex <pnames> <textures>\n");
-
- texname[8]='\0';
- patname[8]='\0';
-
- if (!(fh=open(argv[1], O_BINARY|O_RDONLY)))
- error("Can't open the <pnames> resource.\n");
- read(fh, &numpats, 4);
- if ((pnames=(char *)malloc(8*numpats))==NULL)
- error("Can't allocate space for <pnames> resource.\n");
- if (read(fh, pnames, 8*numpats)!=8*numpats)
- error("The <pnames> resource is short.\n");
- close(fh);
-
- if (!(fh=open(argv[2], O_BINARY|O_RDONLY)))
- error("Can't open <textures>.\n");
-
- for (i=0; i<8*numpats; i++)
- if (*(pnames+i)>0x40 && *(pnames+i)<0x5b) *(pnames+i) |= 0x20;
-
- printf("TEXTURES\n");
- read(fh, &numtexs, 4);
- for (i=0; i<numtexs; i++)
- read(fh, &dummy, 4);
- for (i=0; i<numtexs; i++) {
- for (k=0; k<8; k++)
- read(fh, &texname[k], 1);
- read(fh, &dummy, 4);
- read(fh, &x, 2);
- read(fh, &y, 2);
- read(fh, &dummy, 4);
- read(fh, &lnumpats, 2);
- printf("%s %d %d\n", &texname, x, y);
- for (j=0; j<lnumpats; j++) {
- read(fh, &x, 2);
- read(fh, &y, 2);
- read(fh, &patnum, 2);
- for (k=0; k<8; k++)
- patname[k]=*(pnames+8*patnum+k);
- printf("\t\t%s %d %d\n", &patname, x, y);
- read(fh, &dummy, 4);
- }
- }
- close(fh);
-
- printf("EOF\n");
- free(pnames);
-
- exit(0);
- }